package JavaEE.io;
import java.io.*;
import java.util.*;
public class Demo2 {
    public static void main(String[] args) {
        //readFile1();
        //readFile2();
        //readFile3();
    }

    // 通过FileInputStream来读取文件内容
    public static void readFile1() {
        // try with resource 语法来简化代码
        // try 执行结束后,自动调用close方法
        try (InputStream inputStream = new FileInputStream("C:/javaEE/test.txt")) {
            while (true) {
                byte[] bytes = new byte[1024];
                // 输出型参数:就像你把盘子给阿姨,阿姨给你盛菜
                int n = inputStream.read(bytes);
                // 当目标文件中所有内容都被读取完时,返回-1
                // 否则返回此次读取到的字节个数
                if (n == -1) {
                    break;
                }
                for (int i = 0; i < n; i++) {
                    System.out.printf("%x ", bytes[i]);
                }
                //System.out.println();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 通过FileReader来读取文件内容
    public static void readFile2() {
        try (Reader reader = new FileReader("C:/javaEE/test.txt")){
            while(true){
                // 每次读取一个字符
                // read(char[]) 读取若干个字符(和readFile1类似),为输出型参数
                int ch = reader.read();
                if(ch == -1){
                    break;
                }
                char c = (char) ch;
                System.out.println(c);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    // 通过FileWriter来写入文件内容
    public static void readFile3() {
        // 不加true:每次写入,清空之前内容
        // 加true:每次写入,接着上次写
        try(Writer writer = new FileWriter("C:/javaEE/test.txt",true)){
            // 写入字符串
            writer.write("你好世界");
            // 写入字符
            writer.write('G');
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}
